IF exists(SELECT * FROM dbo.sysobjects WHERE name='WEB_leerlingRoosterVandaag' AND xtype='P') 
BEGIN
	DROP PROCEDURE WEB_leerlingRoosterVandaag
END
GO

create procedure WEB_leerlingRoosterVandaag(@iNr char(7))
as
set nocount on

declare @klas varchar(5)
set @klas = leerlingen.dbo.WEB_klasnaam(@iNr)

------------------------------------------------------
--    VOORAF
------------------------------------------------------

-- Bepalen van de onderzochte dag(en)

declare @dag datetime
declare @zondag datetime
declare @maandag datetime
declare @dinsdag datetime
declare @woensdag datetime
declare @donderdag datetime
declare @vrijdag datetime

set @dag = getDate()
set @zondag = dateAdd(d,1 - datePart(dw,@dag),@dag)
set @maandag = dateAdd(d,2 - datePart(dw,@dag),@dag) 
set @dinsdag = dateAdd(d,3 - datePart(dw,@dag),@dag)
set @woensdag = dateAdd(d,4 - datePart(dw,@dag),@dag)
set @donderdag = dateAdd(d,5 - datePart(dw,@dag),@dag)
set @vrijdag = dateAdd(d,6 - datePart(dw,@dag),@dag)

-- Bepalen van de roostervarianten.

declare @leraar varchar(4)
declare @vandaag dateTime
declare @datum dateTime
declare @var varchar(10)
declare @ma varchar(10)
declare @di varchar(10)
declare @wo varchar(10)
declare @do varchar(10)
declare @vr varchar(10)

declare kalender cursor for
select variant,datum from leerlingen..kalender 
where (datum > @zondag) and (datum <= @vrijdag)
order by datum
open kalender
fetch next from kalender into @var,@datum
while (@@fetch_status = 0)
begin
	if datepart(dw,@datum) = 2 set @ma = '%' + @var + '%'
	if datepart(dw,@datum) = 3 set @di = '%' + @var + '%'
	if datepart(dw,@datum) = 4 set @wo = '%' + @var + '%'
	if datepart(dw,@datum) = 5 set @do = '%' + @var + '%'
	if datepart(dw,@datum) = 6 set @vr = '%' + @var + '%'
	fetch next from kalender into @var,@datum
end
close kalender
deallocate kalender

create table #leraarRooster
	(deLeraar varchar(4),
	hetVak varchar(2),
	deKlas varchar(20),
	deDag varchar(2),
	hetUur int,
	hetLokaal varchar(20))

create table #seminarieRooster
	(deLeraar varchar(4),
	hetVak varchar(2),
	deKlas varchar(20),
	deDag varchar(2),
	hetUur int,
	hetLokaal varchar(20))

--  De dagen
select '4' as volgNr,'do' as kort,'Donderdag' as lang into #dagen
insert into #dagen(volgNr,kort,lang) values('2','di','Dinsdag')
insert into #dagen(volgNr,kort,lang) values('3','wo','Woensdag')
insert into #dagen(volgNr,kort,lang) values('1','ma','Maandag')
insert into #dagen(volgNr,kort,lang) values('5','vr','Vrijdag')

create table #leraarsVariant (leraarDag varchar(10))
create table #seminarieVariant (leraarDag varchar(10))

declare @dagKort varchar(2)
declare @dagLang varchar(12)
declare @volgUur int
declare @uur varchar(2)
declare @vak varchar(2)
declare @lokaal varchar(5)
declare @lokalen varchar(1000)

-------------------------------------------------------------------------------------
-- Opstellen van de roostervarianten
-------------------------------------------------------------------------------------

-- Vullen van een hulptabel van klasnamen met relevante varianten

delete from #leraarsVariant
insert into #leraarsVariant
select deDag+'-'+deLeraar
from leraars..rooster where  
	deKlas= @klas and
	  not (variant is null) and 
	  (((deDag = 'ma') and charIndex(variant,@ma) > 0) or
	   ((deDag = 'di') and charIndex(variant,@di) > 0) or
	   ((deDag = 'wo') and charIndex(variant,@wo) > 0) or
	   ((deDag = 'do') and charIndex(variant,@do) > 0) or
	   ((deDag = 'vr') and charIndex(variant,@vr) > 0))

-- Opzoeken van de basisgegevens. 
-- Als er een variant is, wordt deze gebruikt in plaats van de standaardgegevens.    
 
delete from #leraarRooster

insert into #leraarRooster
    select deLeraar,hetVak,deKlas,deDag,hetUur,hetLokaal
from leraars..rooster 
where deKlas = @klas
	and not(deDag + '-' + deLeraar in (select leraarDag from #leraarsVariant))
	and variant is null
     union  
(select deLeraar,hetVak,deKlas,deDag,hetUur,hetLokaal
    from leraars..rooster where 
	(deKlas = @klas)
	and deDag + '-' + deLeraar in (select leraarDag from #leraarsvariant)
            and ((deDag = 'ma' and charIndex(variant,@ma) > 0) or
	  	 (deDag = 'di' and charIndex(variant,@di) > 0) or
	  	 (deDag = 'wo' and charIndex(variant,@wo) > 0) or
	  	 (deDag = 'do' and charIndex(variant,@do) > 0) or
	  	 (deDag = 'vr' and charIndex(variant,@vr) > 0)))

-------------------------------------------------------------------------------------
-- Overschrijven van de basisroostergegevens door de gegevens van de seminariegroepen.
-------------------------------------------------------------------------------------
-- Vullen van een hulptabel van klasnamen met relevante varianten

delete from #seminarieVariant
insert into #seminarieVariant
select distinct deDag+'-'+naamcode
from leerlingen..seminariegroepen as g
	left join leraars..seminarieRooster as r
  	  on g.groepscode = r.groepscode
where g.inschrijvingsNr = @iNr and
	  not (variant is null) and 
	  (((deDag = 'ma') and charIndex(variant,@ma) > 0) or
	   ((deDag = 'di') and charIndex(variant,@di) > 0) or
	   ((deDag = 'wo') and charIndex(variant,@wo) > 0) or
	   ((deDag = 'do') and charIndex(variant,@do) > 0) or
	   ((deDag = 'vr') and charIndex(variant,@vr) > 0))

-- select * from #seminarievariant

-- Opzoeken van de gegevens. 
-- Als er een variant is, wordt deze gebruikt in plaats van de standaardgegevens.    
 
delete from #seminarieRooster
insert into #seminarieRooster
    select naamcode,vakCode,g.groepscode,deDag,hetUur,hetLokaal
	from leerlingen..seminariegroepen as g
	left join leraars..seminarieRooster as r
  	  on g.groepscode = r.groepscode
        where g.inschrijvingsNr = @iNr
          and not(deDag+'-' + naamcode in (select leraarDag from #seminarieVariant))
	    and variant is null
     union  
(select naamcode,vakcode,g.groepscode,deDag,hetUur,hetLokaal
    from leerlingen..seminariegroepen as g
	left join leraars..seminarieRooster as r
  	  on g.groepscode = r.groepscode
	where g.inschrijvingsNr = @iNr 
          and deDag + '-' + naamcode in (select leraarDag from #seminarievariant)
            and ((deDag = 'ma' and charIndex(variant,@ma) > 0) or
	  	 (deDag = 'di' and charIndex(variant,@di) > 0) or
	  	 (deDag = 'wo' and charIndex(variant,@wo) > 0) or
	  	 (deDag = 'do' and charIndex(variant,@do) > 0) or
	  	 (deDag = 'vr' and charIndex(variant,@vr) > 0)))

-- select * from #seminarierooster
-- Overschrijven van de gegevens uit het basisrooster met de gegevens van de seminariegroepen.

update #leraarRooster
set deLeraar = r.deLeraar,
  hetVak = r.hetVak,
  deKlas = r.deKlas,
  deDag = r.deDag,
  hetUur = r.hetUur,
  hetLokaal = r.hetLokaal 
from leerlingen..seminariegroepen as g
	left join leraars..#seminarieRooster as r
  	  on g.groepscode = r.deklas
	left join #leraarRooster as lr 
	  on r.deDag = lr.deDag
	  and r.hetUur = lr.hetUur
where g.inschrijvingsNr = @iNr
	and r.deDag = lr.deDag
	  and r.hetUur = lr.hetUur


-----------------------------------------------------
--  OPSTELLEN XML
-----------------------------------------------------

select 0 as volgNr, '<?xml version=''1.0'' encoding="ISO-8859-1" ?>' +
'<rooster>' +
'<titel>' + rtrim(@klas) + '</titel>' +
'<datum>' + convert(varchar(20),getDate(),103) + '</datum>' as tekst
union
select 1,'<lijn dag="' + lower(deDag) +
	'" uur="' + convert(varchar(3),hetUur) + '">' +
	'<v>' + hetVak + '</v>' +
	'<l>' + hetLokaal + '</l>' +
	'<m>' + deLeraar + '</m></lijn>'
from #leraarRooster
union
select 3,'</rooster>'
order by volgNr